package org.example.campusforum.controller;

import lombok.extern.slf4j.Slf4j;
import org.example.campusforum.common.Result;
import org.example.campusforum.service.CategoryService;
import org.example.campusforum.vo.CategoryInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 分类控制器
 *
 * 处理文章分类相关的HTTP请求，主要提供分类信息的查询功能。
 * 为前端提供文章分类列表，用于文章发布时的分类选择和文章筛选。
 * 所有接口都需要JWT认证，通过拦截器验证用户身份。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@RestController
@RequestMapping("/api/user/category")
@Slf4j
public class CategoryController {

    /**
     * 分类服务层，处理分类相关业务逻辑
     */
    @Autowired
    private CategoryService categoryService;

    /**
     * 获取所有启用的分类信息
     *
     * 查询所有状态为启用且未删除的分类信息，
     * 返回分类的基本信息供前端展示和选择。
     * 主要用于文章发布页面的分类选择和文章列表的分类筛选。
     *
     * @return 包含所有可用分类信息的响应结果
     */
    @GetMapping()
    public Result<List<CategoryInfo>> getAll(){
        log.info("获取所有分类信息");

        List<CategoryInfo> categoryInfoList = categoryService.getAll();

        return Result.success(categoryInfoList);
    }

}
